In [1]:
import pandas as pd
import numpy as np
import mysql.connector
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn import metrics
from sklearn.metrics import classification_report

Duomenys¶

Duomenų importavimas¶

In [2]:
pp_prekes_2020=pd.read_csv('C:\\...\\CSV\\Pardavimai_pagal_prekes_2020.csv')
In [3]:
pp_prekes_2021=pd.read_csv('C:\\...\\CSV\\Pardavimai_pagal_prekes_2021.csv')
In [4]:
pp_pirkeja_2020=pd.read_csv('C:\\...\\CSV\\Pardavimai_pagal_pirkeja_2020.csv')
In [5]:
pp_pirkeja_2021=pd.read_csv('C:\\...\\CSV\\Pardavimai_pagal_pirkeja_2021.csv')
In [6]:
sqldb = mysql.connector.connect(
    host="localhost",
    port="3306",
    user="root",
    password="****"
)

cursor = sqldb.cursor()
cursor.execute("SHOW DATABASES")
for i in cursor:
   print(i)
('information_schema',)
('mysql',)
('performance_schema',)
('sakila',)
('sys',)
('world',)
In [7]:
padalinys = pd.read_sql('SELECT * FROM sakila.padalinys', con=sqldb)

Duomenų jungimas, išvalymas ir papildymas¶

In [8]:
pp_pirkeja_2020.head(2)
Out[8]:
Kliento_id Kliento_pavadinimas Dokumento_id Data Padalinio_id Prekės_id Prekės_pavadinimas Kiekis Suma PVM
0 01 Kasos pirkėjai POS20200204 2020.02.04 00:00 01 0024317026XL CORE COTTON POLO 1 10.07 2.12
1 01 Kasos pirkėjai POS20200218 2020.02.18 00:00 01 0024549001M DUNKER LS POLO 1 7.44 1.56
In [9]:
pp_prekes_2020.head(2)
Out[9]:
Padalinio_id Prekės_id Prekės_pavadinimas Kiekis Suma Suma_G Suma_P Suma_savikaina Pelnas
0 00 0036319124S HUMMEL SIRIUS SS JERSEY 3 24.79 0.0 24.79 -21.12 3.67
1 00 0036362001M CORE SS POLY JERSEY 2 25.62 0.0 25.62 -11.32 14.30
In [10]:
padalinys.rename(columns={'Padalinio_id':'Padalinio_id'}, inplace=True)
padalinys.head(2)
Out[10]:
Padalinio_id Padalinio_pavadinimas
0 00 Rezervacija
1 01 Sandelys
In [11]:
pp_pirkeja_2020['Metai']='2020'
pp_pirkeja_2021['Metai']='2021'
pp_prekes_2020['Metai']='2020'
pp_prekes_2021['Metai']='2021'
In [12]:
pp_prekes_2020['New_id']=pp_prekes_2020['Padalinio_id'] + '_' + pp_prekes_2020['Prekės_id']
In [13]:
pp_prekes_2021['New_id']=pp_prekes_2021['Padalinio_id'] + '_' + pp_prekes_2021['Prekės_id']
In [14]:
pp_pirkeja_2020['New_id']=pp_pirkeja_2020['Padalinio_id'] + '_' + pp_pirkeja_2020['Prekės_id']
In [15]:
pp_pirkeja_2021['New_id']=pp_pirkeja_2021['Padalinio_id'] + '_' + pp_pirkeja_2021['Prekės_id']
In [16]:
pp_prekes_2020.drop(pp_prekes_2020[pp_prekes_2020['Suma_savikaina']==0].index,inplace=True)
In [17]:
pp_prekes_2020.drop(pp_prekes_2020[pp_prekes_2020['Kiekis']==0].index,inplace=True)
In [18]:
pp_prekes_2020['Prekės_savikaina']=((pp_prekes_2020['Suma_savikaina']/pp_prekes_2020['Kiekis'])*-1).round(2)
In [19]:
pp_prekes_2021.drop(pp_prekes_2021[pp_prekes_2021['Kiekis']==0].index,inplace=True)
In [20]:
pp_prekes_2021.drop(pp_prekes_2021[pp_prekes_2021['Suma_savikaina']==0].index,inplace=True)
In [21]:
pp_prekes_2021['Prekės_savikaina']=((pp_prekes_2021['Suma_savikaina']/pp_prekes_2021['Kiekis'])*-1).round(2)
In [22]:
pardavimai_20=pd.merge(pp_pirkeja_2020, pp_prekes_2020, on=['New_id'], how='left')
In [23]:
pardavimai_21=pd.merge(pp_pirkeja_2021, pp_prekes_2021, on=['New_id'], how='left')
In [24]:
pardavimai_20_21=pd.concat([pardavimai_20,pardavimai_21])
In [25]:
pardavimai_20_21.rename(columns={'Padalinio_id_x':'Padalinio_id'}, inplace=True)
In [26]:
pardavimai_20_21=pd.merge(pardavimai_20_21, padalinys, on=['Padalinio_id'], how='left')
In [27]:
pardavimai_20_21.rename(columns={'Metai_x':'Metai', 'Prekės_id_x':'Prekės_id', 'Prekės_pavadinimas_x':'Prekės_pavadinimas', 'Kiekis_x':'Kiekis', 'Suma_x':'Suma'}, inplace=True)
In [28]:
pardavimai =pardavimai_20_21[['Metai','Data','Dokumento_id', 'Padalinio_id', 'Padalinio_pavadinimas', 'Kliento_id', 'Kliento_pavadinimas', 'Prekės_id', 'Prekės_pavadinimas', 'Kiekis', 'Suma', 'Prekės_savikaina']]
In [29]:
pardavimai=pardavimai.dropna(subset=['Prekės_savikaina'])
In [30]:
pardavimai['Pelnas']=(pardavimai['Suma']-pardavimai['Prekės_savikaina']*pardavimai['Kiekis']).round(2)
In [31]:
pardavimai['Pelningumas']=(pardavimai['Pelnas']/pardavimai['Suma']).round(2)
In [32]:
pardavimai['Data'] = pd.to_datetime(pardavimai['Data'])
In [33]:
pardavimai['Mėnuo'] = pardavimai['Data'].dt.month
pardavimai['Ketvirtis'] = pd.PeriodIndex(pardavimai.Data, freq='Q')
pardavimai['Savaitės_diena'] = pardavimai['Data'].dt.weekday
In [34]:
Dydis=pd.read_csv('C:\\Users\\vofka\\Desktop\\BIG DATA\\PYTHON\\Atsiskaitymui\\HM\\CSV\\Dydis.csv')
In [35]:
pardavimai=pd.merge(pardavimai, Dydis, left_index=True, right_on='Unnamed: 0')
In [36]:
def parama(s):
    return 'Butkevičius' in s
pardavimai['Parama']=pardavimai['Kliento_pavadinimas'].map(parama)
In [37]:
Parama=pardavimai[pardavimai['Parama']==True]
In [38]:
pardavimai=pardavimai[pardavimai['Parama']==False]
In [73]:
pardavimai
Out[73]:
Metai Data Dokumento_id Padalinio_id Padalinio_pavadinimas Kliento_id Kliento_pavadinimas Prekės_id_x Prekės_pavadinimas Kiekis ... Pelnas Pelningumas Mėnuo Ketvirtis Savaitės_diena Unnamed: 0 Prekės_id_y Dydis Parama Kaina
0 2020 2020-02-04 POS20200204 01 Sandelys 01 Kasos pirkėjai 0024317026XL CORE COTTON POLO 1 ... 1.95 0.19 2 2020Q1 1 0 0024317026XL xl False 10.07
1 2020 2020-02-18 POS20200218 01 Sandelys 01 Kasos pirkėjai 0024549001M DUNKER LS POLO 1 ... -7.01 -0.94 2 2020Q1 1 1 0024549001M m False 7.44
2 2020 2020-06-02 POS20200602 01 Sandelys 01 Kasos pirkėjai 0036315001M HUMMEL SIRIUS SS JERSEY 1 ... -5.20 -1.26 6 2020Q2 1 2 0036315001M m False 4.13
3 2020 2020-06-03 POS20200603 01 Sandelys 01 Kasos pirkėjai 0036315001XL HUMMEL SIRIUS SS JERSEY 1 ... -5.25 -1.27 6 2020Q2 2 3 0036315001XL xl False 4.13
4 2020 2020-06-05 POS20200605 01 Sandelys 01 Kasos pirkėjai 0036315001XL HUMMEL SIRIUS SS JERSEY 2 ... -2.22 -0.13 6 2020Q2 4 4 0036315001XL xl False 8.27
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
150595 2021 2021-12-30 VB210888 K31 siauliai po inventorizacijos 305208983 MB "Sportspotas" 94003720012X HMLCANOLLO WAISTCOAT 1 ... 7.94 0.27 12 2021Q4 3 152323 94003720012X NaN False 29.75
150596 2021 2021-12-30 VB210888 K31 siauliai po inventorizacijos 305208983 MB "Sportspotas" 940038200112 hmlCASSANDY ZIP COAT 1 ... 8.82 0.23 12 2021Q4 3 152324 940038200112 NaN False 38.35
150597 2021 2021-12-30 VB210888 K31 siauliai po inventorizacijos 305208983 MB "Sportspotas" 94014420012X HMLESTOS ZIP COAT 1 ... 26.30 0.41 12 2021Q4 3 152325 94014420012X NaN False 64.46
150598 2021 2021-12-30 VB210888 K31 siauliai po inventorizacijos 305208983 MB "Sportspotas" 980139200111 HMLALENC BAG PACK 1 ... 6.08 0.39 12 2021Q4 3 152326 980139200111 NaN False 15.62
150599 2021 2021-12-30 VB210888 K31 siauliai po inventorizacijos 305208983 MB "Sportspotas" MARSKINELIAI Marškinėliai BC 1 ... -1.65 -0.67 12 2021Q4 3 152327 MARSKINELIAI NaN False 2.48

148107 rows × 22 columns

Pardavimų analizė¶

Pardavimai pagal periodus¶

Pajamos per mėnesį¶

  1. Kuriais mėnesiai yra pdidžiausios pajamos?
  2. Ar pajamos didesnės prieššventiniu laikotarpiu?
  3. Kaip pardavimuose atsispindi meetų pradžios išpardavimai?
In [40]:
pardavimai_pagal_menesi = pardavimai.groupby(['Metai','Mėnuo'])['Suma'].sum()
pd.DataFrame (pardavimai_pagal_menesi)
Out[40]:
Suma
Metai Mėnuo
2020 1 177987.69
2 199718.17
3 109502.02
4 65317.63
5 160014.94
6 168094.74
7 173301.49
8 181821.04
9 173595.74
10 118802.70
11 117709.11
12 120754.25
2021 1 99058.95
2 101116.46
3 184347.69
4 186548.74
5 164973.47
6 145524.60
7 173116.71
8 178628.28
9 191603.21
10 151444.94
11 123461.69
12 149279.88
In [41]:
y1=pardavimai[pardavimai['Metai']=='2020'].groupby( 'Mėnuo')['Suma'].sum()
y2=pardavimai[pardavimai['Metai']=='2021'].groupby( 'Mėnuo')['Suma'].sum()
z1=pardavimai[pardavimai['Metai']=='2020'].groupby( 'Mėnuo')['Kiekis'].sum()
z2=pardavimai[pardavimai['Metai']=='2021'].groupby( 'Mėnuo')['Kiekis'].sum()
y1.plot(title='Pajamos ir parduotų prekių kiekis per mėnesį ', ylabel='Suma €', c='r', lw=3)
y2.plot(c='g', lw=3, figsize=(12,5))
z1.plot(c='r', lw=3, linestyle='-.')
z2.plot(c='g', lw=3, linestyle='-.')
Out[41]:
<AxesSubplot:title={'center':'Pajamos ir parduotų prekių kiekis per mėnesį '}, xlabel='Mėnuo', ylabel='Suma €'>
  1. 2020 metais didžiausios pajamos fiksuotos sausio, vasario ir rugpjūčio mėnesiais. Tuo tarpu 2021 metais daugiausia pajamų pardavus prekes gauta kovo, balandžio ir rugsėjo mėnesiais. Pardavimų sumos ir mėnesio ryšio sunku nustatyti - parduotų prekių kiekis taip pat neturi tendencingumo lyginant skirtingus metus.
  2. Ir 2020 ir 2021 metaais stebimas didesnis pelnas gruodžio mėnesį, palyginus su lapkričio, tačiau jis yra nežymus, ir bendrai metų eigoje prieššventinis laikotarpis nėra susijęs su didesniais pardavimais.
  3. 2020 metų pradžia ir parduotų prekių kiekiu ir pajamomis išsiskiria,kai 2021 metais tokio padidėjimo nėra. Reikia tetalėsnės analizės, kas lėmė tokius rezultatus 2020 metais, ar tai parduotuvės ir interneto pirkėjais, gal buvo stambūs partnerių pirkimai.

Pardavimai pagal savaitės dieną¶

  1. Ar savaitės diena turi įtakos pardavimams?
In [42]:
y1=pardavimai[pardavimai['Metai']=='2020'].groupby( 'Savaitės_diena')['Suma'].sum()
y2=pardavimai[pardavimai['Metai']=='2021'].groupby( 'Savaitės_diena')['Suma'].sum()
y1.plot(title='Pajamos pagal savaitės dieną', ylabel='Suma €', c='r', lw=3)
y2.plot(c='g', lw=3, figsize=(12,3))
Out[42]:
<AxesSubplot:title={'center':'Pajamos pagal savaitės dieną'}, xlabel='Savaitės_diena', ylabel='Suma €'>
In [43]:
y1=pardavimai[pardavimai['Metai']=='2020'].groupby( 'Savaitės_diena')['Kiekis'].sum()
y2=pardavimai[pardavimai['Metai']=='2021'].groupby( 'Savaitės_diena')['Kiekis'].sum()
y1.plot(title='Parduotų prekių kiekis pagal savaitės dieną', ylabel='Suma €', c='r', lw=3)
y2.plot(c='g', lw=3, figsize=(12,3))
Out[43]:
<AxesSubplot:title={'center':'Parduotų prekių kiekis pagal savaitės dieną'}, xlabel='Savaitės_diena', ylabel='Suma €'>
  1. Aiškiai matomas pardavimų kritimas savaitgaliais, tai gali būti susiję su tuo, kad dalis paruotuvių savaitgaliais nedirba ar dirba trumpiau, taip pat pardavimai partenriams vykdomi darbo dienomis.

Pelnas ketvirčiais¶

  1. Ar pelnas 2021 metais didesnis nei 2020 metais?
  2. Ar galima teigti, kad pelnas visus ketvirčius 2021 metais didesni?
  3. Ar pelningumas(marža) kito 2 metų bėgyje?
In [44]:
pardavimai.groupby('Metai')['Pelnas'].sum()
Out[44]:
Metai
2020    539786.12
2021    625070.31
Name: Pelnas, dtype: float64
In [45]:
pardavimai.groupby(['Metai','Ketvirtis'])['Pelnas'].sum()
Out[45]:
Metai  Ketvirtis
2020   2020Q1       143868.78
       2020Q2       136531.68
       2020Q3       143664.77
       2020Q4       115720.89
2021   2021Q1       151866.69
       2021Q2       190735.86
       2021Q3       155352.33
       2021Q4       127115.43
Name: Pelnas, dtype: float64
In [46]:
plt.subplot(2,2,1) 
plt.title('1Q')
x1=pardavimai[pardavimai['Ketvirtis']=='2020Q1'].groupby( 'Mėnuo')['Pelnas'].sum()
y1=pardavimai[pardavimai['Ketvirtis']=='2021Q1'].groupby( 'Mėnuo')['Pelnas'].sum()
plt.plot(x1, c='r')
plt.plot(y1, c='g')

plt.subplot(2,2,2) 
plt.title('2Q')
x2=pardavimai[pardavimai['Ketvirtis']=='2020Q2'].groupby( 'Mėnuo')['Pelnas'].sum()
y2=pardavimai[pardavimai['Ketvirtis']=='2021Q2'].groupby( 'Mėnuo')['Pelnas'].sum()
plt.plot(x2, c='r')
plt.plot(y2, c='g')

plt.subplot(2,2,3) 
plt.title('3Q')
x3=pardavimai[pardavimai['Ketvirtis']=='2020Q3'].groupby( 'Mėnuo')['Pelnas'].sum()
y3=pardavimai[pardavimai['Ketvirtis']=='2021Q3'].groupby( 'Mėnuo')['Pelnas'].sum()
plt.plot(x3, c='r')
plt.plot(y3, c='g')

plt.subplot(2,2,4) 
plt.title('4Q')
x4=pardavimai[pardavimai['Ketvirtis']=='2020Q4'].groupby( 'Mėnuo')['Pelnas'].sum()
y4=pardavimai[pardavimai['Ketvirtis']=='2021Q4'].groupby( 'Mėnuo')['Pelnas'].sum()
plt.plot(x4, c='r')
plt.plot(y4,c='g')

plt.tight_layout()
In [47]:
pardavimai.plot(x='Suma', y='Pelnas', kind='scatter', c='y')
Out[47]:
<AxesSubplot:xlabel='Suma', ylabel='Pelnas'>
In [48]:
sns.boxplot(x='Ketvirtis',y='Pelningumas', data=pardavimai, hue='Metai')
Out[48]:
<AxesSubplot:xlabel='Ketvirtis', ylabel='Pelningumas'>
  1. 2021 metais pelnas buvo 85 tūkstančiais didesnis nei 2020 metais.
  2. Nors vertinant rezultatus kas mėnesį tendenciją sunku įvertinti, tačiau žiūrint pelną ketviričiais, matome, jog visi ketvirčiai 2021 metais buvo pelningesni.
  3. Nors pelningumas skirtingiems pirkimams labai 'išsibarstęs', viidutinė marža yra gana stabili.

Prekės¶

Dažniausiai parduodamos prekės¶

  1. Kokios yra dažniaiusiai parduodamos prekės?
In [49]:
prekes_ = pardavimai.groupby('Prekės_pavadinimas')[['Kiekis','Suma', 'Pelnas']].agg('sum').sort_values(by=['Kiekis'], ascending=False)
prekes_['Pelningumas']=(prekes_['Pelnas']/prekes_['Suma']).round(2)
pd.DataFrame (prekes_).head(10)
Out[49]:
Kiekis Suma Pelnas Pelningumas
Prekės_pavadinimas
REC. PLASTIC BAG MEDIUM (500) 14515 219.83 -70.47 -0.32
CORE SS POLY JERSEY 7160 55625.04 20926.60 0.38
CORE POLY SHORTS 5688 43724.80 18100.49 0.41
Estafečių kūgis 5060 1018.35 452.75 0.44
ELEMENT FOOTBALL SOCK 4844 13869.28 5703.24 0.41
HMLGO COTTON PANT 4396 61620.50 6757.63 0.11
CORE POLY JACKET 3468 57502.19 24160.34 0.42
CORE POLY PANT 3460 56653.84 24122.90 0.43
MEDALIS 3164 2392.56 1063.68 0.44
CORE SPRAY JACKET 2630 58346.81 22627.18 0.39
In [50]:
sns.scatterplot(data=prekes_, x='Kiekis', y='Pelnas')
Out[50]:
<AxesSubplot:xlabel='Kiekis', ylabel='Pelnas'>
  1. Dažniausiai parduodama prekė yra - plastikinis maišelis - įsigytoms prekėms susidėti. Įvetinus parduotų prekių kiekį ir gautą pelną, matome, jog reikia dealiau įvertinti parduodamas prekes ir jų pelningumą.

Pelningiausios prekės¶

  1. Ar prekės, kurių pelningumas(marža) didžiausias - neša daugiausia pelno?
In [51]:
prekes_.sort_values(by=['Pelnas'], ascending=False).head(10)
Out[51]:
Kiekis Suma Pelnas Pelningumas
Prekės_pavadinimas
CORE POLY JACKET 3468 57502.19 24160.34 0.42
CORE POLY PANT 3460 56653.84 24122.90 0.43
hmlTROPPER TAPERED PANTS 2105 50971.34 23297.43 0.46
CORE SPRAY JACKET 2630 58346.81 22627.18 0.39
CORE SS POLY JERSEY 7160 55625.04 20926.60 0.38
CORE POLY SHORTS 5688 43724.80 18100.49 0.41
HMLGUY PANTS 1821 40977.40 13645.45 0.33
HMLGO COTTON ZIP HOODIE 1581 33321.74 13371.35 0.40
hmlTROPPER ZIP HOODIE 893 27104.23 11758.27 0.43
hmlISAM ZIP HOODIE 862 22485.54 9567.43 0.43

In [52]:
prekes_.sort_values(by=['Pelningumas'], ascending=False).head(10)
Out[52]:
Kiekis Suma Pelnas Pelningumas
Prekės_pavadinimas
SHOPPING BAG 2016 18 862.81 858.85 1.00
Krepšys su ratukais 25 1198.35 1192.85 1.00
Kelioniniai krepšiai 40 1917.36 1908.56 1.00
Kelioninis krepšys 92 3571.91 3551.67 0.99
Pasipriešinimo diržas 9 315.00 310.32 0.99
krepšys kelioninis 8 200.00 198.24 0.99
kaklo mova 40 160.00 154.40 0.97
Paradiniai šortai 122 2621.49 2550.73 0.97
Apatiniai marškinėliai 212 2842.97 2713.21 0.95
BARJERAS J-G 79/6 11 181.82 170.38 0.94
In [53]:
prekes_[prekes_['Pelningumas']>-2].plot.scatter(x='Pelningumas', y='Pelnas', figsize=(12,3), c='y')
Out[53]:
<AxesSubplot:xlabel='Pelningumas', ylabel='Pelnas'>
  1. Ne. Prekių pelningumo skaida yra labai didelė. Daugiausia pelno neša prekės kurių pelingumas 0,3-0,5 (30-50%). Jei tarp daugiausiai parduotų prekių matėme įvairesnių prekių (inventorius, viršutiniai rūbai, kojinės, medaliai), tai tarp daugiausia elno atnešusių yra vien virųutiniai sportui ir laisvalaikoui skirti rūbai.

Rūbų pardavimai pagal dydžius¶

  1. Kokie rūbų dydžiai yra populiariausi?
In [54]:
a=pd.DataFrame(pardavimai.groupby(['Dydis','Metai'])['Kiekis'].sum()).reset_index().sort_values(by=['Kiekis'], ascending=False)
In [55]:
sns.barplot(x='Dydis', y='Kiekis', data=a, hue='Metai', palette='hls')
Out[55]:
<AxesSubplot:xlabel='Dydis', ylabel='Kiekis'>
  1. Dažniausiai perkami rūbai, kurių dydis yra 'M', po to 'L' ir 'S'. 'XS' rūbų parduodama tris kart mažiau ne 'S', XXL dydžio rūbų parduodama apie 200 per metus. Rūbų pardavimo pagal dydžius tendencija atittinka 2020 ir 2021 metais.

Padaliniai¶

  1. Kaip pasiskirsto pardavimai padaliniuose?
In [56]:
padaliniai_ = pardavimai.groupby('Padalinio_pavadinimas')[['Kiekis','Suma', 'Pelnas']].agg('sum').sort_values(by=['Kiekis'], ascending=False)
padaliniai_['Pelningumas']=(padaliniai_['Pelnas']/padaliniai_['Suma']).round(2)
pd.DataFrame (padaliniai_).head(12)
Out[56]:
Kiekis Suma Pelnas Pelningumas
Padalinio_pavadinimas
Sandelys 111215 1820251.29 778746.13 0.43
Rezervacija 52003 535091.24 202918.10 0.38
Domus infinitum 24420 224465.10 15740.04 0.07
Domus infinitum Palanga 21371 183004.02 12522.03 0.07
DI Siaure 20215 236410.03 5886.36 0.02
Vitaga ir KO (baze) 13347 253831.91 86788.41 0.34
Akropolis Kaunas 10029 83467.89 6568.97 0.08
Panevezys 3587 61093.22 16929.99 0.28
Vilnius Akropolis 3405 30607.88 2000.77 0.07
DOEYS 3007 35895.39 1916.01 0.05
Vilnius Outlet 2233 25243.26 2009.24 0.08
Siauliu parduotuve MB"Sportspotas""" 2103 26044.53 7907.73 0.30
  1. Ši lentelė reikalauja detalesnės analizės. 'Sandėlys' - pagrindis padalinys, iš kurio parduodamos prekės - tai apima ir interneto pirkėjus, ir pardavimus juridiniams asmenims. DI Šiaurė yra prekių likučių išparduotuvė - todėl jos pelningumas mažiausias. Vilnius Outlet kol kas tik 10 vietoje, nes atidaryta tik 2021 metų spalio pabaigoje.

Klientai¶

In [57]:
klientai_ = pardavimai.groupby('Kliento_id')[['Kiekis','Suma', 'Pelnas']].agg('sum').sort_values(by=['Kiekis'], ascending=False).head(10)
klientai_['Pelningumas']=(klientai_['Pelnas']/klientai_['Suma']).round(2)
pd.DataFrame (klientai_).reset_index()
Out[57]:
Kliento_id Kiekis Suma Pelnas Pelningumas
0 304887467 92393 879991.67 43815.38 0.05
1 01 39254 742277.63 371748.85 0.50
2 302559863 36961 419528.79 95807.71 0.23
3 190729624 31329 460201.24 229952.77 0.50
4 135931479 13528 256747.61 87568.80 0.34
5 02 12126 254656.92 119634.97 0.47
6 304590537 10828 57233.20 9106.59 0.16
7 304985908 9033 141017.78 50760.67 0.36
8 302502951 5473 82885.17 24122.79 0.29
9 305208983 4562 55452.26 18219.23 0.33
In [58]:
kl_=pardavimai.groupby(['Kliento_id', 'Metai'])['Suma'].sum().sort_values(ascending=False)
kl_=pd.DataFrame (kl_).reset_index()
kl_=kl_.pivot('Kliento_id', 'Metai', 'Suma')
kl_=kl_.sort_values(by='2021', ascending=False).head(10)
kl_1=pardavimai.groupby(['Kliento_id', 'Metai'])['Kiekis'].sum().sort_values(ascending=False)
kl_1=pd.DataFrame (kl_1).reset_index()
kl_1=kl_1.pivot('Kliento_id', 'Metai', 'Kiekis')
kl_1=kl_1.sort_values(by='2021', ascending=False).head(10)
In [59]:
kl_['2020'].plot(title='Pajamos pagal klientus 20-21 metais', ylabel='Suma €', c='r', lw=3)
kl_['2021'].plot(c='g', lw=3, figsize=(12,2))
Out[59]:
<AxesSubplot:title={'center':'Pajamos pagal klientus 20-21 metais'}, xlabel='Kliento_id', ylabel='Suma €'>
In [60]:
kl_1['2020'].plot(title='Parduotos prekės pagal klientus 20-21 metais', ylabel='Kiekis vnt.', linestyle='-.', c='r', lw=3)
kl_1['2021'].plot(c='g', lw=3, linestyle='-.', figsize=(12,2))
Out[60]:
<AxesSubplot:title={'center':'Parduotos prekės pagal klientus 20-21 metais'}, xlabel='Kliento_id', ylabel='Kiekis vnt.'>

Parama¶

  1. Kiek ir kokios paramos skirta 2020-2021 metais?
In [61]:
Parama.groupby('Metai')['Kiekis'].sum()
Out[61]:
Metai
2020     7938
2021    17253
Name: Kiekis, dtype: int64
In [62]:
Parama.groupby('Metai')['Suma'].sum().round(2)
Out[62]:
Metai
2020     62707.95
2021    147829.97
Name: Suma, dtype: float64
In [63]:
Parama.groupby('Prekės_pavadinimas')['Kiekis'].sum().sort_values(ascending=False).head(10)
Out[63]:
Prekės_pavadinimas
CORE SS POLY JERSEY         956
CORE POLY SHORTS            944
Marškinėliai                863
Marškinėliai varžybiniai    660
ELEMENT FOOTBALL SOCK       632
Šortai                      580
MEDALIS                     455
TECH MOVE JERSEY S/S        441
HMLGUY PANTS                430
STORM LIGHT FB              418
Name: Kiekis, dtype: int64
  1. Per šiuos metus skirta paramos už 25 191 Eurus. 2021 metai paramai skirta dvigubai daugiau nei 2020 metais. Dažniausiai paramą sudarė sportinė apranga - marškinėliai, šortai, kojinės, taip pat medaliai.

Regresija¶

  1. Ar galima naudojant linijinę regresiją nustatyti pardavimo kainą, žinant prekės savikainą
In [64]:
pardavimai['Kaina']=pardavimai['Suma']/pardavimai['Kiekis']
In [65]:
from sklearn.model_selection import train_test_split
In [66]:
pardavimaiR=pardavimai[pardavimai['Prekės_savikaina']<=200]
In [67]:
model=LinearRegression()
X=pd.DataFrame(pardavimaiR['Prekės_savikaina'])
y=pardavimaiR['Kaina']
model.fit(X,y)
model.predict([[8]])
Out[67]:
array([12.74477891])
In [68]:
r_squared=model.score(X,y)
r_squared
Out[68]:
0.5270614832455793
In [69]:
prediction=model.predict(X)
In [70]:
pardavimaiR['prediction']=prediction.round(2)
C:\Users\vofka\AppData\Local\Temp/ipykernel_309940/3336903579.py:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  pardavimaiR['prediction']=prediction.round(2)
In [71]:
plt.scatter(X,y)
plt.plot(X,prediction, c='r', lw=3)
Out[71]:
[<matplotlib.lines.Line2D at 0x1c09e479820>]
  1. Skaičiuojant Linijinės regresijos patikimumą turimiems duomenis R kvadratas lygus 0,53. Tad negalima teigti, kad pasinaudojant LInijine regresija automatiškai galime nustatyti pardavimo kainą. Linijinės regresijos rezultatą, galima mayti, reikia skaičiuoti atskirai nustatant kainą įmonėms partneriams ir atskirai fiziniams ar juridiniams asmenis, įsigyjantiems prekes ffizinėse parduotuvėse ar internetu. Taip pat svarbu atkkreipti dėmesį į iįparduodamas prekes, jos taip pat iškreipia rezultatą.

Išvados¶

  1. 2021 metais gauta daugiau pajamų (ir pelno) pallyginus su 2020 metais. Ta pati tendencija visais ketvirčiais.
  1. Daugiausia pelno nešančios prekės - sporto ir laisvalaikio viršutiniai rūbai. Dažniausia parduodami M dydžio rūbai, toliau seka L ir S.
  1. Linijinė Regresija prognozuojant pardavimo kainą pagal savikainą esamiems duomenims netinka, dėl daug šalutinių, kinamųjų, kurie taip pat lemia pardavimo kainą.

In [72]:
pardavimai.to_csv('C:\\...\\Pardavimai_galutinis.csv')